package factura.dao;

import java.sql.SQLException;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;

import factura.modelo.ImpuestoValor;

public class ProductoDAO {
	private Session session;

	public ImpuestoValor obtenerValorImpuestoIVA() throws SQLException,
			ClassNotFoundException {
		ImpuestoValor iv = null;
		session = HibernateUtilDAO.getSessionFactory().openSession();
		String hql = "from impuesto_valor where codigo_impuesto=2 and (TIPO_IMPUESTO='I' or TIPO_IMPUESTO='A')";
		Query query = session.createQuery(hql);
		if (!query.list().isEmpty()) {
			iv = (ImpuestoValor) query.list().get(0);
		}

		return iv;
	}
	
	public static List obtenerValorImpuestoIVA(String entidadFuente,String expresionOrderBy) throws Exception {
		try {
			Session sesion;
			sesion=HibernateUtilDAO.getSessionFactory().openSession();
			sesion.beginTransaction();
			Query q;
			if(expresionOrderBy==null || expresionOrderBy.length()==0)
				q=sesion.createQuery("from"+entidadFuente+" where id_impuesto=2 and (TIPO_IMPUESTO='I' or TIPO_IMPUESTO='A')");
			else
				q=sesion.createQuery("from impuesto_valor where id_impuesto=2 and (TIPO_IMPUESTO='I' or TIPO_IMPUESTO='A')"+expresionOrderBy);
			@SuppressWarnings("unchecked")
			List listado=q.list();
			sesion.getTransaction().commit();
			sesion.close();
			return listado;
		} catch (HibernateException e) {
			e.printStackTrace();
			throw new Exception("Ha ocurrido un error (DAO). "+e.getMessage());
		}
	}
	/**
	 * finder generico que devuelve una lista de todos los objetos existentes en una tabla.
	 * @param entidadFuente nombre de la entidad fuente.
	 * @return Listado de objetos encontrados en la bdd.
	 * @throws Exception Error de la capa DAO.
	 */
	public static List obtenerImpuestoValor(String entidadFuente) throws Exception {
		return obtenerValorImpuestoIVA(entidadFuente,null);
	}
	

}
